]> git.neil.brown.name Git - wiggle.git/blob - dotest
e718f13c9d1e86e16652d42a0bb5159a39eae9cb
[wiggle.git] / dotest
1 #!/usr/bin/env bash
2
3 # Redirect for non-GNU time systems
4 if [ "xx$TIME_CMD" = "xx" ]
5 then
6   time_cmd=/usr/bin/time
7 else
8   time_cmd=$TIME_CMD
9 fi
10
11 dir=$PWD
12
13 while [ ! -f $dir/wiggle ]
14 do
15   if [ -z "$dir" ]; then
16     echo >&2 Cannot find wiggle program : $WIGGLE
17     exit 1
18   fi
19   dir=${dir%/*}
20 done
21 export WIGGLE=$dir/wiggle
22
23 if [ -d tests ]
24 then cd tests
25 fi
26
27 TIME="$time_cmd -o .time -f %U"
28 if $TIME true > /dev/null 2>&1
29 then :
30 else TIME=
31 fi
32 vallog=/tmp/valg.log-$$
33 > $vallog
34 if [ " $1" = " valgrind" ]; then
35   TIME="valgrind --log-file=$vallog"
36 fi
37 status=0
38 ok=0
39 fail=0
40
41 find . -name core | xargs rm -f
42 list=$(find . -type f \( -name script -o -name diff -o -name ldiff \
43         -o -name rediff -o -name merge -o -name wmerge -o -name lmerge \
44         -o -name replace -o -name Wmerge -o -name bmerge \)
45       )
46 for path in $list
47 do
48   dir=${path%/*}
49   base=${path##*/}
50   (
51     cd $dir
52     > .time
53     case $base in 
54         script ) ./script ;;
55         diff ) if [ -f new ]
56                 then $TIME $WIGGLE -dw orig new | diff -u diff - ; xit=$?
57                 else $TIME $WIGGLE -dwp1 orig patch | diff -u diff - ; xit=$?
58                 fi
59                 ;;
60         ldiff ) if [ -f new ]
61                 then $TIME $WIGGLE -dl orig new | diff -u ldiff - ; xit=$?
62                 else $TIME $WIGGLE -dlp1 orig patch | diff -u ldiff - ; xit=$?
63                 fi
64                 ;;
65         reldiff ) $TIME $WIGGLE -dl patch | diff -u reldiff - ; xit=$?
66                 ;;
67         rediff ) $TIME $WIGGLE -dw patch | diff -u rediff - ; xit=$?
68                 ;;
69         merge )  if [ -f patch ]
70                  then $TIME $WIGGLE -m orig patch | diff -u merge - ; xit=$?
71                  elif [ -f new ] 
72                  then $TIME $WIGGLE -m orig new new2 | diff -u merge - ; xit=$?
73                  else $TIME $WIGGLE -m orig | diff -u merge - ; xit=$?
74                  fi
75                 ;;
76         replace ) cp orig orig.tmp
77                  if [ -f patch ]
78                  then $TIME $WIGGLE -mr orig.tmp patch 
79                  else $TIME $WIGGLE -mr orig.tmp new new2
80                  fi
81                  diff -u merge orig.tmp ; xit=$?
82                  rm  orig.tmp orig.tmp.porig
83                 ;;
84         lmerge )  if [ -f patch ]
85                  then $TIME $WIGGLE -ml orig patch | diff -u lmerge - ; xit=$?
86                  else $TIME $WIGGLE -ml orig new new2 | diff -u lmerge - ; xit=$?
87                  fi
88                  ;;
89         wmerge )  if [ -f patch ]
90                  then $TIME $WIGGLE -mw orig patch | diff -u wmerge - ; xit=$?
91                  else $TIME $WIGGLE -mw orig new new2 | diff -u wmerge - ; xit=$?
92                  fi
93                  ;;
94         Wmerge )  if [ -f patch ]
95                  then $TIME $WIGGLE -mW orig patch | diff -u Wmerge - ; xit=$?
96                  else $TIME $WIGGLE -mW orig new new2 | diff -u Wmerge - ; xit=$?
97                  fi
98                  ;;
99         bmerge )  if [ -f patch ]
100                  then $TIME $WIGGLE -mbw orig patch | diff -u bmerge - ; xit=$?
101                  else $TIME $WIGGLE -mbw orig new new2 | diff -u bmerge - ; xit=$?
102                  fi
103                  ;;
104    esac
105    if [ $xit = 0 ]; then msg=SUCCEEDED; else msg=FAILED; fi
106    if grep 'ERROR SUMMARY: [1-9]' $vallog > /dev/null 2>&1
107    then msg="$msg WITH VALGRIND ERRORS"; xit=1
108    fi
109    echo $path $msg `grep -v 'Command exited' .time 2> /dev/null`
110    rm -f .time
111    exit $xit
112   ) 
113   if [ $? = 0 ]
114   then let ok++; 
115   else status=1 ; let fail++ 
116   fi
117 done
118 find . -name core -ls
119 echo $ok succeeded and $fail failed
120 exit $status